#include <iostream>
#include <string>
#include <exception>

using namespace std;

class MyException:exception
{
	private:
		string mensaje;
	public:
		MyException()
		{
			mensaje = "Error en la especificacion de ingresados, no es ni entero ni cadena\n";
		}
		MyException(string msg)
		{
			mensaje = msg;
		}
		void mostrarMensaje()
		{
			std::cout<<mensaje;
		}
};
int main(int argc,char * argv[])
{
	for(int i=1;i<argc;i++)
	{
		try
		{
			try
			{
				string a = argv[i];
				if(argv[i][0] == 'i')
				{
					string valor = "";
					valor = a.substr(2,strlen(argv[i]));
					int numero = atoi(valor.c_str());
					throw(numero);
				}
				else
				{
					if(argv[i][0] == 'c')
					{	
						string valor = "";
						valor = a.substr(2,strlen(argv[i]));
						throw(valor);
					}
					else
					{
						MyException ex("lalala\n");
						throw(ex);
					}
				}
			}
			catch (int numero)
			{
				cout<<"parametro = "<<numero << endl;
				throw;
			}
			catch (string cadena)
			{
				cout<<"parametro = "<<cadena << endl;
				throw;
			}
			catch (MyException ex)
			{
				ex.mostrarMensaje();
				throw;
			}
			catch(exception ex)
			{
				cout<<"error" << endl;
			}
		}
		catch(...)
		{
			cout << "Relanzado de la exception!" << endl;
		}
	}
	cin.get();
	return 0;
}